'use strict';

const Controller = require('egg').Controller;

class ApprovalPermissionController extends Controller {
  /**
   * 获取人员信息（包含审批审批权限）
   * @returns {Promise<void>}
   */
  async getPersonnelWithPermissions() {
    const {
      ctx
    } = this;

    try {
      // 调用service层方法
      const result = await ctx.service.approvalPermission.getPersonnelWithPermissionsService(ctx.request.body);

      ctx.body = result
    } catch (error) {
      ctx.throw(400, error)
    }
  }

  /**
   * 更新人员的审批权限
   * @returns {Promise<void>}
   */
  async updatePersonApprovalPermissions() {
    const {
      ctx
    } = this;

    try {
      // 获取请求参数
      const data = ctx.request.body;

      // 验证必填参数
      if (!data.person_id) {
        ctx.throw(400, '人员ID不能为空');
        return;
      }

      // 调用service层方法
      const result = await ctx.service.approvalPermission.updatePersonApprovalPermissionsService(data);

      ctx.body = result
    } catch (error) {
      ctx.throw(400, error)
    }
  }

  /**
   * 根据审批级别获取人员树状结构
   * @param {Object} ctx.request.body
   */
  async findApproversByLevelTree() {
    const {
      ctx
    } = this;

    const result = await ctx.service.approvalPermission.findApproversByLevelTreeService(ctx.request.body);
    ctx.body = result;
  }
}

module.exports = ApprovalPermissionController;